<?php

require_once('../DBconnect.php');

abstract class DataBaseTable {
	
	// Tableau des champs de la table
	protected $fields;
	// Nom de la table dans la base
	protected $table_name;
	// Noms des tables utilisées si nécessaire pour effectuer un SELECT
	protected $tables_select;
	// Champs devant être retournés par la requête SELECT (souvant *)
	protected $table_fields;
	// Nom de la classe du model correspondant à un champs de notre table
	protected $class_name;
	// Objet PDO pour accéder à la base de données
	protected $pdo;
	
	// Constructeur
	function construct($table_name,$class_name)
	{
		$db = DBconnect::GetInstance();
		$this->pdo = $db->GetPDO();
		$this->table_name = $table_name;
		$this->class_name = $class_name;
	}
	
	// Ajouter un enregistrement dans la table
	function add_field($field);
	// Retourne true si l'enregistrement identifié par '$id' peut être supprimé
	function can_be_deleted($id);
	// insert data related to associated tables
	function relations_insert($instance);
	// update data related to associated table
	function relations_update($instance);
	//delete data related to associated table
	function relations_delete($instance);
	// select data related to associated table
	function relations_select($instance);
	// truncate table
	function truncate();
	// insert one instance
	function insert_unique_i($instance);
	// update given instance using id
	function update_unique_i($instance);
	// delete given instance using id
	function delete($instance);
	// select records and return result as array
	function select_many_t($criteria);
	// select records and return result as array of instances
	function select_many_i($criteria);
	// select records and return result as array of instances with relations
	function select_many_ir($criteria);
}

?>